package com.exam.util;


import com.exam.entity.FillQuestion;
import com.exam.entity.MultiQuestion;
import com.exam.entity.examlx;

import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.ss.usermodel.Cell;

import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class MultiQuestionPoiUtils {

    //这是解析上传的Excel文件为对象集合，从而批量添加数据的方法
    public static List<MultiQuestion> parseFile2List(MultipartFile file, List<examlx> examlx ) throws IOException {
        List<MultiQuestion> topics =new ArrayList<>();
        HSSFWorkbook workbook = new HSSFWorkbook(file.getInputStream());
        HSSFSheet sheet = workbook.getSheetAt(0);
        int physicalNumberOfRows = sheet.getPhysicalNumberOfRows();//获取表单所有的行
        HSSFRow row = sheet.getRow(0);//获取第一行标题，组建列名称
        String [] lxx= new String[examlx.size()];
        String [] ltype= new String[examlx.size()];
        for(int i=0;i<examlx.size();i++){
            if(row.getCell(i).equals(examlx.get(i).getMc())){
//                列和excel相同
                lxx[i]=examlx.get(i).getName();
                ltype[i]=examlx.get(i).getType();
            }
        }
/*//        通过查数据库确定有几列并且确定每一列对应的字段。
        PaperServiceImpl p1=new PaperServiceImpl();//不可以new 因为springboot不能读注解了就。
        List<examlx> examlx= p1.findAlllx("填空题");
        System.out.printf("examlx==="+examlx);*/
//      获取第一行标题的属性用于set值往数据库
        for (int i = 1; i < physicalNumberOfRows; i++) {
            MultiQuestion topic=new MultiQuestion();
            for(int j=0;j<examlx.size();j++){
                row = sheet.getRow(i);
                HSSFCell c0 = row.getCell(j);
                if(row.getCell(j)!=null){
                    row.getCell(j).setCellType(Cell.CELL_TYPE_STRING);
                    if(examlx.get(j).getName().equals("subject")){
                        topic.setSubject(c0.getStringCellValue());
                    }
                    if(examlx.get(j).getName().equals("question")){
                        topic.setQuestion(c0.getStringCellValue());
                    }
                    if(examlx.get(j).getName().equals("rightanswer")){
                        topic.setRightAnswer(c0.getStringCellValue());
                    }
                    if(examlx.get(j).getName().equals("analysis")){
                        topic.setAnalysis(c0.getStringCellValue());
                    }
                    if(examlx.get(j).getName().equals("score")){
                        topic.setScore(Integer.parseInt(c0.getStringCellValue()));
                    }
                    if(examlx.get(j).getName().equals("level")){
                        topic.setLevel(c0.getStringCellValue());
                    }
                    if(examlx.get(j).getName().equals("section")){
                        topic.setSection(c0.getStringCellValue());
                    }
                    if(examlx.get(j).getName().equals("answera")){
                        topic.setAnswerA(c0.getStringCellValue());
                    }
                    if(examlx.get(j).getName().equals("answerb")){
                        topic.setAnswerB(c0.getStringCellValue());
                    }
                    if(examlx.get(j).getName().equals("answerc")){
                        topic.setAnswerC(c0.getStringCellValue());
                    }
                    if(examlx.get(j).getName().equals("answerd")){
                        topic.setAnswerD(c0.getStringCellValue());
                    }

                }
            }
            topics.add(topic);



        }

        return topics;
    }
}

